---
sidebar_position: 2
---

# Для программ на C++

```cpp
#include <iostream>
#include <iomanip>
#include <cstring>

using namespace std;

struct I_print {        // данные для печати результатов интегрирования
    char *name;         // название функции
    double i_sum;       // значение интегральной суммы
    double i_toch;      // точное значение интеграла
    int n;              // число разбиений области интегрирования  при котором достигнута требуемая точность
};

void PrintTabl(I_print i_prn[], int k) {
    const char SIDE_SYBMOL = '|';
    const char HORIZONTAL_SYBMOL = '-';
    const char CONNECTOR_SYBMOL = '+';

    const int m = 4;                // число столбцов таблицы
    int wn[m] = {12, 18, 18, 10};   // ширина столбцов таблицы
    char *title[m] = {(char *) "Function", (char *) "Integral", (char *) "IntSum", (char *) "N "};
    int size[m];
    for (int i = 0; i < m; i++) {
        size[i] = (int) strlen(title[i]);
    }

    // шапка таблицы
    std::cout << CONNECTOR_SYBMOL << setfill(HORIZONTAL_SYBMOL);
    for (int j = 0; j < m - 1; j++)
        cout << setw(wn[j]) << CONNECTOR_SYBMOL;
    cout << setw(wn[m - 1]) << CONNECTOR_SYBMOL << endl;

    cout << SIDE_SYBMOL;
    for (int j = 0; j < m; j++)
        cout << setw((wn[j] - size[j]) / 2) << setfill(' ') << ' ' << title[j]
             << setw((wn[j] - size[j]) / 2) << SIDE_SYBMOL;
    cout << endl;

    // заполнение таблицы
    for (int i = 0; i < k; i++) {
        cout << CONNECTOR_SYBMOL << fixed;
        for (int j = 0; j < m - 1; j++)
            cout << setfill(HORIZONTAL_SYBMOL) << setw(wn[j]) << CONNECTOR_SYBMOL;
        cout << setw(wn[m - 1]) << CONNECTOR_SYBMOL << setfill(' ') << endl;

        cout << SIDE_SYBMOL << setw((int) (wn[0] - strlen(i_prn[i].name)) / 2) << ' ' << i_prn[i].name
             << setw((int) (wn[0] - strlen(i_prn[i].name)) / 2) << SIDE_SYBMOL;
        cout << setw(wn[1] - 1) << setprecision(10) << i_prn[i].i_toch << SIDE_SYBMOL
             << setw(wn[2] - 1) << i_prn[i].i_sum << setprecision(6) << SIDE_SYBMOL
             << setw(wn[3] - 1) << i_prn[i].n << SIDE_SYBMOL << endl;
    }

    // низ таблицы
    cout << CONNECTOR_SYBMOL << setfill(HORIZONTAL_SYBMOL);
    for (int j = 0; j < m - 1; j++)
        cout << setw(wn[j]) << CONNECTOR_SYBMOL;
    cout << setw(wn[m - 1]) << CONNECTOR_SYBMOL << setfill(' ') << endl;
}

int main() {
    setlocale(LC_ALL, "Russian");
    I_print a{};
    a.name = (char *) "ccaa";
    a.i_sum = 1;
    a.i_toch = 2;
    a.n = 3;

    I_print b{};
    b.name = (char *) "ddbb";
    b.i_sum = 4;
    b.i_toch = 5;
    b.n = 6;

    I_print f[2];
    f[0] = a;
    f[1] = b;

    PrintTabl(f, 2);
    return 0;
}
```
